Dynamic Embedding

Embedded content can be added dynamically to a page using any programming language that can generate HTML - providing a more sophisticated set of capabilities than the simple cut-and-paste capability from the Pyramid application. Using Pyramid's content REST APIs, it would also be possible to automatically extract the content IDs needed instead of hard-coding them in the host page - providing the basis for a custom content viewer that can be tailored for each individual user.

Embed APIs

The embedding process is meant to be simple and effective without complexity. However, there are a few functions required when not using the simple cut-and-paste model:

  • pyramid.runAll() - Runs all visuals currently hosted on the page
  • pyramid.runById(id) – Runs a specific visual, using its ID
  • pyramid.stopAll() – Stops loading all visuals and disposes them from the host page heap
  • pyramid.stopById(id) - Stops a specific visual, using its ID
  • pyramid.embed(element, options) - explained below
  • pyramid.stop(element) - explained below

Embed function

This function takes 2 parameters: the first one is an HTML element or a selector.

// html element var container = document.getElementById('container') pyramid.embed(container, options) // or, you can pass the selector of the html element pyramid.embed('#container', options)

The second parameter is the configuration object for the embedded content

type Options = { id: string, //required host: string, // required contentType: string, // required params: ExternalParameters // optinal }

Example:

var options = { id: "f8d66c64-893b-43fc-8049-e9b710ec90f9", host: "https://mysite", contentType: "discovery" }

The last params parameter is for adding filters to the content. Click here for more details on the parameterization syntax.

pyramid.stop

This function will stop the running embedded content

// html element var container = document.getElementById('container') pyramid.stop(container) // or, you can pass the selector of the html element pyramid.stop('#container')

Dynamic Embed Example

The following example demonstrates how to programmatically load embedded content to a page using JavaScript and jQuery.

NOTE: This does not cover the authentication steps. This needs to be addressed separately.

<!-- add a container element to the page --> <div class="container"></div> <!-- add the embed and jquery scripts --> <script src="https://code.jquery.com/jquery-2.2.4.min.js"></script> <script src="https://mysite/no-shell/embed.js"></script> <script> function runEmbed() { // get the container element var container = $('.container') // set width and height on the element container.width(1000).height(400) // embed the report content in the container pyramid.embed(container.get(0), { id: "f8d66c64-893b-43fc-8049-e9b710ec90f9", host: "https://mysite", contentType: "discovery" }) } window.onload = function() { runEmbed() } </script>

Setting filters for embedded content

To use filter parameters in an embedded discovery, send a params object to the pyramid.embed function as the last parameter

pyramid.embed(container.get(0), { id: "f8d66c64-893b-43fc-8049-e9b710ec90f9", host: "https://mysite", contentType: "discovery", params: { reportFilters: [{ value: "[Customer].[Country].[United States]" }, { value: "[Date].[year].[2010]" }] } })